home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / s_to_z / spidr100 / setup.arv / OBJTEST.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-09-15  |  12.4 KB  |  468 lines

  1. {----------------------------------------------------------------------------
  2. |
  3. | Library: Spider Containers for Object Pascal
  4. |
  5. | Module: ObjTest.Pas
  6. |
  7. | Description: Main form for Spider Container library example program.
  8. |
  9. | History: Version 1.0  March 1996. Copyright (c) 1996 Michel Brazeau
  10. |                                   Interval Software
  11. |
  12. |---------------------------------------------------------------------------}
  13. unit ObjTest;
  14.  
  15. interface
  16.  
  17. uses
  18.   WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  19.   StdCtrls, Dialogs, Buttons, Messages, ExtCtrls,
  20.  
  21.   ObjList;   { TUnorderedList }
  22.  
  23. { returns a random value to be used when testing containers }
  24. function GetRandomNumber : Word;
  25.  
  26. type
  27.   TTestForm = class(TForm)
  28.     MainMenu: TMainMenu;
  29.     WindowMenu: TMenuItem;
  30.     HelpMenu: TMenuItem;
  31.     WindowCascadeItem: TMenuItem;
  32.     WindowTileItem: TMenuItem;
  33.     WindowArrangeItem: TMenuItem;
  34.     HelpAboutItem: TMenuItem;
  35.     WindowMinimizeItem: TMenuItem;
  36.     TestMenu: TMenuItem;
  37.     ArrayItem: TMenuItem;
  38.     HashTableItem: TMenuItem;
  39.     ListsItem: TMenuItem;
  40.     QueueItem: TMenuItem;
  41.     StackItem: TMenuItem;
  42.     FileMenu: TMenuItem;
  43.     ExitItem: TMenuItem;
  44.     StatusBar: TPanel;
  45.     ViewMenu: TMenuItem;
  46.     ArrayTestSource: TMenuItem;
  47.     HashStringTableTestSource: TMenuItem;
  48.     ListsTestSource: TMenuItem;
  49.     QueuePriorityQueueTestSource: TMenuItem;
  50.     StackTestSource: TMenuItem;
  51.     MainFormTestSouce: TMenuItem;
  52.     SpiderHelp: TMenuItem;
  53.     Bevel: TBevel;
  54.     procedure FormCreate(Sender: TObject);
  55.     procedure WindowCascadeItemClick(Sender: TObject);
  56.     procedure UpdateMenuItems(Sender: TObject);
  57.     procedure WindowTileItemClick(Sender: TObject);
  58.     procedure WindowArrangeItemClick(Sender: TObject);
  59.     procedure ExitItemClick(Sender: TObject);
  60.     procedure WindowMinimizeItemClick(Sender: TObject);
  61.     procedure FormDestroy(Sender: TObject);
  62.     procedure ArrayItemClick(Sender : TObject);
  63.     procedure HashTableItemClick(Sender: TObject);
  64.     procedure ListsItemClick(Sender: TObject);
  65.     procedure QueueItemClick(Sender: TObject);
  66.     procedure StackItemClick(Sender: TObject);
  67.     procedure ArrayTestSourceClick(Sender: TObject);
  68.     procedure HashStringTableTestSourceClick(Sender: TObject);
  69.     procedure ListsTestSourceClick(Sender: TObject);
  70.     procedure QueuePriorityQueueTestSourceClick(Sender: TObject);
  71.     procedure StackTestSourceClick(Sender: TObject);
  72.     procedure MainFormSourceClick(Sender: TObject);
  73.     procedure SpiderHelpClick(Sender: TObject);
  74.     procedure HelpAboutItemClick(Sender: TObject);
  75.   private
  76.     { Private declarations }
  77.     procedure ShowHint(Sender: TObject);
  78.  
  79.     { creates and adds a TTextViewForm to display FileName }
  80.     procedure AddTextViewForm( const FileName : String );
  81.  
  82.   public
  83.     { Public declarations }
  84.  
  85.     { allows the user to select a file and load numbers from it into a
  86.       list containing TWordBucket's }
  87.     procedure LoadNumbersFromFile( NumberList : TUnorderedList );
  88.  
  89.     { allows the user to select a file and load strings from it into a
  90.       list containing TStringCombo's }
  91.     procedure LoadStringsFromFile( StringList : TUnorderedList );
  92.  
  93.     { allows the user to select a file, given a default file name }
  94.     procedure RequestFileName( var FileName     : String;
  95.                                const InitialDir : String;
  96.                                const Filter     : String );
  97.  
  98. end;
  99.  
  100. var
  101.   TestForm: TTestForm;
  102.  
  103. {--------------------------------------------------------------------------}
  104.  
  105. implementation
  106.  
  107. {$R *.DFM}
  108.  
  109. uses
  110.  
  111.     ObjBuckt,   { TWordBucket, TStringCombo }
  112.     About,      { TAboutBox }
  113.     TextView,   { TTextViewForm }
  114.     StkTest,    { TStackForm }
  115.     QueTest,    { TQueueForm }
  116.     HashTest,   { THashTableForm }
  117.     ArrTest,    { TArrayForm }
  118.     ListTest;   { TNodeContainerForm }
  119.  
  120. {--------------------------------------------------------------------------}
  121.  
  122. function GetRandomNumber : Word;
  123. begin
  124.     Randomize;
  125.  
  126.     Result := Random(9999);
  127. end;
  128.  
  129. {--------------------------------------------------------------------------}
  130.  
  131. procedure TTestForm.FormCreate(Sender: TObject);
  132. begin
  133.   Application.OnHint := ShowHint;
  134.   Screen.OnActiveFormChange := UpdateMenuItems;
  135. end;
  136.  
  137. {--------------------------------------------------------------------------}
  138.  
  139. procedure TTestForm.RequestFileName( var FileName     : String;
  140.                                      const InitialDir : String;
  141.                                      const Filter     : String );
  142. var
  143.     OpenDialog : TOpenDialog;
  144.  
  145. begin
  146.     OpenDialog := TOpenDialog.Create(Self);
  147.     try
  148.         OpenDialog.InitialDir := InitialDir;
  149.  
  150.         OpenDialog.Filter     := Filter + '|' + Filter;
  151.  
  152.         OpenDialog.Options    := [ ofHideReadOnly ];
  153.  
  154.         OpenDialog.FileName   := FileName;
  155.  
  156.         if OpenDialog.Execute then
  157.             FileName := OpenDialog.FileName
  158.         else
  159.             Abort; { raise silent exception }
  160.  
  161.     finally
  162.         OpenDialog.Free;
  163.     end;
  164. end;
  165.  
  166. {--------------------------------------------------------------------------}
  167.  
  168. procedure TTestForm.LoadNumbersFromFile( NumberList : TUnorderedList );
  169. const
  170.     CountStr   : String = '25';
  171. var
  172.     FileName   : String;
  173.  
  174.     InFile     : System.Text;
  175.  
  176.     NumberStr  : String;
  177.  
  178.     I          : LongInt;
  179.  
  180. begin
  181.     FileName := 'Numbers.Dat';
  182.  
  183.     if not FileExists(FileName) then
  184.         RequestFileName(FileName, '.\Demo', '*.Dat');
  185.  
  186.     if not InputQuery('', 'Number of elements: ', CountStr) then
  187.         Exit;
  188.  
  189.     System.Assign(InFile, FileName);
  190.     System.Reset(InFile);
  191.  
  192.     try
  193.         for I := 1 to StrToInt(CountStr) do
  194.         begin
  195.             if Eof(InFile) then
  196.                 break;
  197.  
  198.             ReadLn(InFile, NumberStr);
  199.             NumberList.InsertAtTail(TWordBucket.Create(StrToInt(NumberStr)));
  200.         end;
  201.  
  202.     finally
  203.         System.Close(InFile);
  204.     end;
  205. end;
  206.  
  207. {--------------------------------------------------------------------------}
  208.  
  209. procedure TTestForm.LoadStringsFromFile( StringList : TUnorderedList );
  210. const
  211.     CountStr   : String = '25';
  212. var
  213.     FileName   : String;
  214.  
  215.     InFile     : System.Text;
  216.  
  217.     Str        : String;
  218.  
  219.     I          : LongInt;
  220.  
  221. begin
  222.     FileName := 'Strings.Dat';
  223.  
  224.     if not FileExists(FileName) then
  225.         RequestFileName( FileName, '.\Demo', '*.Dat' );
  226.  
  227.     if not InputQuery('', 'Number of elements: ', CountStr) then
  228.         Exit;
  229.  
  230.     System.Assign(InFile, FileName);
  231.     System.Reset(InFile);
  232.  
  233.     try
  234.         for I := 1 to StrToInt(CountStr) do
  235.         begin
  236.             if Eof(InFile) then
  237.                 break;
  238.  
  239.             ReadLn(InFile, Str);
  240.             StringList.InsertAtTail(TStringCombo.Create(Str,nil));
  241.         end;
  242.  
  243.     finally
  244.         System.Close(InFile);
  245.     end;
  246.  
  247. end;
  248.  
  249. {--------------------------------------------------------------------------}
  250.  
  251. procedure TTestForm.ShowHint(Sender: TObject);
  252. begin
  253.     StatusBar.Caption := Application.Hint;
  254. end;
  255.  
  256. {--------------------------------------------------------------------------}
  257.  
  258. procedure TTestForm.ExitItemClick(Sender: TObject);
  259. begin
  260.     Close;
  261. end;
  262.  
  263. {--------------------------------------------------------------------------}
  264.  
  265. procedure TTestForm.WindowCascadeItemClick(Sender: TObject);
  266. begin
  267.     Cascade;
  268. end;
  269.  
  270. {--------------------------------------------------------------------------}
  271.  
  272. procedure TTestForm.WindowTileItemClick(Sender: TObject);
  273. begin
  274.     Tile;
  275. end;
  276.  
  277. {--------------------------------------------------------------------------}
  278.  
  279. procedure TTestForm.WindowArrangeItemClick(Sender: TObject);
  280. begin
  281.     ArrangeIcons;
  282. end;
  283.  
  284. {--------------------------------------------------------------------------}
  285.  
  286. procedure TTestForm.WindowMinimizeItemClick(Sender: TObject);
  287. var
  288.     I: Integer;
  289. begin
  290.     { Must be done backwards through the MDIChildren array }
  291.     for I := MDIChildCount - 1 downto 0 do
  292.         MDIChildren[I].WindowState := wsMinimized;
  293. end;
  294.  
  295. {--------------------------------------------------------------------------}
  296.  
  297. procedure TTestForm.UpdateMenuItems(Sender: TObject);
  298. begin
  299.     WindowCascadeItem.Enabled := MDIChildCount > 0;
  300.     WindowTileItem.Enabled := MDIChildCount > 0;
  301.     WindowArrangeItem.Enabled := MDIChildCount > 0;
  302.     WindowMinimizeItem.Enabled := MDIChildCount > 0;
  303. end;
  304.  
  305. {--------------------------------------------------------------------------}
  306.  
  307. procedure TTestForm.FormDestroy(Sender: TObject);
  308. begin
  309.     Screen.OnActiveFormChange := nil;
  310. end;
  311.  
  312. {--------------------------------------------------------------------------}
  313.  
  314. procedure TTestForm.ArrayItemClick(Sender : TObject);
  315. begin
  316.     TArrayForm.Create(Self);
  317. end;
  318.  
  319. {--------------------------------------------------------------------------}
  320.  
  321. procedure TTestForm.HashTableItemClick(Sender: TObject);
  322. begin
  323.     THashTableForm.Create(Self);
  324. end;
  325.  
  326. {--------------------------------------------------------------------------}
  327.  
  328. procedure TTestForm.ListsItemClick(Sender: TObject);
  329. begin
  330.     TNodeContainerForm.Create(Self);
  331. end;
  332.  
  333. {--------------------------------------------------------------------------}
  334.  
  335. procedure TTestForm.QueueItemClick(Sender: TObject);
  336. begin
  337.     TQueueForm.Create(Self);
  338. end;
  339.  
  340. {--------------------------------------------------------------------------}
  341.  
  342. procedure TTestForm.StackItemClick(Sender: TObject);
  343. begin
  344.     TStackForm.Create(Self);
  345. end;
  346.  
  347. {--------------------------------------------------------------------------}
  348.  
  349. procedure TTestForm.AddTextViewForm(const FileName : String);
  350. begin
  351.     TTextViewForm.Create(Application, FileName);
  352. end;
  353.  
  354. {--------------------------------------------------------------------------}
  355.  
  356. procedure TTestForm.ArrayTestSourceClick(Sender: TObject);
  357. var
  358.     FileName : String;
  359. begin
  360.     FileName := 'ArrTest.Pas';
  361.  
  362.     if not FileExists(FileName) then
  363.         RequestFileName(FileName, '.\Demo', '*.pas');
  364.  
  365.     AddTextViewForm(FileName);
  366. end;
  367.  
  368. {--------------------------------------------------------------------------}
  369.  
  370. procedure TTestForm.HashStringTableTestSourceClick(Sender: TObject);
  371. var
  372.     FileName : String;
  373. begin
  374.     FileName := 'HashTest.Pas';
  375.  
  376.     if not FileExists(FileName) then
  377.         RequestFileName(FileName, '.\Demo', '*.pas');
  378.  
  379.     AddTextViewForm(FileName);
  380. end;
  381.  
  382. {--------------------------------------------------------------------------}
  383.  
  384. procedure TTestForm.ListsTestSourceClick(Sender: TObject);
  385. var
  386.     FileName : String;
  387. begin
  388.     FileName := 'ListTest.Pas';
  389.  
  390.     if not FileExists(FileName) then
  391.         RequestFileName(FileName, '.\Demo', '*.pas');
  392.  
  393.     AddTextViewForm(FileName);
  394. end;
  395.  
  396. {--------------------------------------------------------------------------}
  397.  
  398. procedure TTestForm.QueuePriorityQueueTestSourceClick(Sender: TObject);
  399. var
  400.     FileName : String;
  401. begin
  402.     FileName := 'QueTest.Pas';
  403.  
  404.     if not FileExists(FileName) then
  405.         RequestFileName(FileName, '.\Demo', '*.pas');
  406.  
  407.     AddTextViewForm(FileName);
  408. end;
  409.  
  410. {--------------------------------------------------------------------------}
  411.  
  412. procedure TTestForm.StackTestSourceClick(Sender: TObject);
  413. var
  414.     FileName : String;
  415. begin
  416.     FileName := 'StkTest.Pas';
  417.  
  418.     if not FileExists(FileName) then
  419.         RequestFileName(FileName, '.\Demo', '*.pas');
  420.  
  421.     AddTextViewForm(FileName);
  422. end;
  423.  
  424. {--------------------------------------------------------------------------}
  425.  
  426. procedure TTestForm.MainFormSourceClick(Sender: TObject);
  427. var
  428.     FileName : String;
  429. begin
  430.     FileName := 'ObjTest.Pas';
  431.  
  432.     if not FileExists(FileName) then
  433.         RequestFileName(FileName, '.\Demo', '*.pas');
  434.  
  435.     AddTextViewForm(FileName);
  436. end;
  437.  
  438. {--------------------------------------------------------------------------}
  439.  
  440. procedure TTestForm.SpiderHelpClick(Sender: TObject);
  441. begin
  442.     Application.HelpFile := '..\Help\Contain.Hlp';
  443.     Application.HelpCommand(HELP_CONTENTS, 0);
  444. end;
  445.  
  446. {--------------------------------------------------------------------------}
  447.  
  448. procedure TTestForm.HelpAboutItemClick(Sender: TObject);
  449. var
  450.     AboutBox : TAboutBox;
  451. begin
  452.     AboutBox := TAboutBox.Create(Self);
  453.  
  454.     try
  455.         {$ifdef Win32}
  456.         AboutBox.Compiler.Caption := '32 bit build';
  457.         {$else}
  458.         AboutBox.Compiler.Caption := '16 bit build';
  459.         {$endif}
  460.         AboutBox.ShowModal;
  461.     finally
  462.         AboutBox.Free;
  463.     end;
  464.  
  465. end;
  466.  
  467. end.
  468.